在 Linux 中 kernel 是作業系統的核心,而接下來我將學習各個部件事如何分工的,但是我只會專注在 kernel 上,並理解其複雜的細節。在系統中可大致分成三大層,分別為硬體、內核(kernel)、以及用戶空間(user space)。硬體和軟體之間透過作業系統的幫助,可以相互溝通協助。以下是 Linux 系統中三大層簡單介紹:
硬體
硬體層包含著 CPU 、硬碟、記憶體、顯示器等等設備,負責電腦的運算。
內核
這一層的功能主要處理進程和系統呼叫、設備的通訊、記憶體管理等等。透過處理硬體的通訊,可以透過進程來告訴硬體我們是如何想要它進行操作。
用戶空間
用戶空間顧名思義就是用戶使用的空間,就像是我們平常使用的介面、使用的軟體等等。
特權等級
在 Linux 中對了進程的運行分出了兩個特權等級,分別為使用者模式以及內核模式。
1.使用者模式:在此模式中,使用者只被允許訪問自身的記憶體空間,並對硬體的訪問受到限制。而 user space 就是在此模式中運行的。
2.內核模式:在內核模式下,程序可以對系統有著全面的控制權,因此在此模式下,可以直接訪問該系統記憶體空間並竄改、執行特權指令等操作。
而當需要進行特權的操作時,可以透過 system call 來向內核發出請求,切換為核心模式完成該操作,並在完成後切回使用者模式。若將 user space 和 kernel 併為同一種模式的話,將會因為權限的使用不當而產生安全的疑慮。因此透過 system call 的機制,我們可以在適當的時機轉換權限,維持著系統的穩定性和安全性。